/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ordenar;

import javax.swing.JOptionPane;
import persistencia.Register;
import persistencia.RegisterFile;

/**
 *
 * @author ivan
 */
public class SelectionSort implements MethodOrder{

    /**
       * Ordena el RegisterFile de menor a mayor, de acuerdo a las comparaciones realizadas por compareTo(), usando el
       * algoritmo de Selecci�n Directa. El archivo sale cerrado.
       */
    public boolean ordenar(RegisterFile reg)
    {
        boolean retorno=true;
       try
        {
            // tenemos que asegurarnos que el archivo est� abierto en modo rw.

            long i, j;
            Register ri, rj;
            ri  = new Register ( reg.tipoDatosAlmacenados() );
            rj  = new Register ( reg.tipoDatosAlmacenados() );

            long n = reg.registerCount();
            for (i = 0; i < n-1; i++)
            {
                  reg.seekRegister( i );
                  reg.read( ri );
                  for (j = i+1; j < n; j++)
                  {
                        reg.seekRegister( j );
                        reg.read( rj );
                        if ( ri.compareTo( rj ) > 0 )
                        {
                               reg.seekRegister( j );
                               reg.write( ri );

                               Register aux = ri;
                               ri  = rj;
                               rj = aux;
                        }
                  }
                  reg.seekRegister( i );
                  reg.write( ri );
            }
            //reg.close();
        }
        catch(Exception e)
        {
            retorno = false;
           
        }
        return retorno;
    }
    public String toString()
    {
        return "SelectionSort";
    }

}
